這是一個在 Vue 3 被拿掉的功能,但還是來了解一下。
filter
用途及用法filter
是讓雙花括號({{}}
)或 v-bind
表達式中的值通過 |
再來讓 filter
作用,寫法如下:
<!-- 在 Mustache 中 -->
{{ message | filterName }}
<!-- 在 `v-bind` 中 -->
<div v-bind:id="searchText | filterName"></div>
message
或 searchText
都會被 |
後的 filter
作用。
// 全域
//value指的是雙花括號(`{{}}`)或 `v-bind` 表達式中的值
Vue.filter('filterName',value=>{
//...
})
//區域
new Vue({
filters:{
filterName(value){
//...
}
}
})
透過上面的方法創建 filter
,來讓雙花括號({{}}
)或 v-bind
表達式中的值被代入該 filter
後,返回新的值。
filter
的參數多個 filter
<p>message : {{ message | uppercase | filterName(1,5) }}</p>
<script>
Vue.filter('uppercase',value=>{
return value.toUpperCase()
})
Vue.filter('filterName',(value,param1,param2)=>{
return value.slice(param1,param2)
})
</script>
message
會先被代入 uppercase()
執行,得到 A 值,再將得到的 A 值代入 filterName()
裡去執行,最後得到並顯示 B 值。
代入多個引數
<p>sliceMsg : {{ sliceMsg | filterName(arg1,arg2) }}</p>
<script>
Vue.filter('filterName',(value,param1,param2)=>{
return value.slice(param1,param2)
})
</script>
filterName
本身是個函數,所以可以有其他參數,但必須注意 sliceMsg
會作為 filterName
的第一個引數(value
),而 arg1
、 arg2
分別為 filterName
的第二個跟第三個引數來執行。
filter
感覺比較簡單,就到這結束了!
Demo:DAY21 | 跟 Vue.js 認識的30天 - Vue 過濾器(filter
)
參考資料